
% (1) 产生数字基带信号并绘制时域谱和频域谱
Fs = 1000; % 采样率
T = 1/Fs; % 采样间隔
t = 0:T:1-T; % 时间向量

% 设计数字基带信号（示例为正弦信号）
f = 10; % 信号频率
x = sin(2*pi*f*t);

% 绘制时域谱
figure;
subplot(9,2,1);
plot(t, x);
xlabel('时间 (s)');
ylabel('幅度');
title('数字基带信号的时域谱');

% 绘制频域谱
N = length(x); % 信号长度
frequencies = (-Fs/2):(Fs/N):(Fs/2-Fs/N); % 频率向量
X = fftshift(fft(x)/N); % 频域谱
subplot(9,2,2);
plot(frequencies, abs(X));
xlim([-Fs/2, Fs/2]);
xlabel('频率 (Hz)');
ylabel('幅度');
title('数字基带信号的频域谱');



% (2) 设置载波频率并绘制其时域谱和频域谱
Fc = 100; % 载波频率
carrier = cos(2*pi*Fc*t);

% 绘制时域谱

subplot(9,2,3);
plot(t, carrier);
xlabel('时间 (s)');
ylabel('幅度');
title('载波信号的时域谱');

% 绘制频域谱
Carrier = fftshift(fft(carrier)/N); % 频域谱
subplot(9,2,4);
plot(frequencies, abs(Carrier));
xlim([-Fs/2, Fs/2]);
xlabel('频率 (Hz)');
ylabel('幅度');
title('载波信号的频域谱');

% (3) 对信号进行数字调制并绘制时域谱和频域谱
modulated_signal = x .* carrier;

% 绘制时域谱

subplot(9,2,5);
plot(t, modulated_signal);
xlabel('时间 (s)');
ylabel('幅度');
title('数字调制后的信号的时域谱');

% 绘制频域谱
Modulated_signal = fftshift(fft(modulated_signal)/N); % 频域谱
subplot(9,2,6);
plot(frequencies, abs(Modulated_signal));
xlim([-Fs/2, Fs/2]);
xlabel('频率 (Hz)');
ylabel('幅度');
title('数字调制后的信号的频域谱');

% (4) 对已调信号进行解调并绘制时域谱和频域谱
demodulated_signal = modulated_signal .* carrier;

% 绘制时域谱

subplot(9,2,7);
plot(t, demodulated_signal);
xlabel('时间 (s)');
ylabel('幅度');
title('解调后的信号的时域谱');

% 绘制频域谱
Demodulated_signal = fftshift(fft(demodulated_signal)/N); % 频域谱
subplot(9,2,8);
plot(frequencies, abs(Demodulated_signal));
xlim([-Fs/2, Fs/2]);
xlabel('频率 (Hz)');
ylabel('幅度');
title('解调后的信号的频域谱');

% (5) 对已调信号加入高斯小噪声并绘制时域谱和频域谱
noise_power = 0.01; % 噪声功率
noise = sqrt(noise_power) * randn(size(modulated_signal)); % 高斯小噪声
noisy_signal = modulated_signal + noise;

% 绘制时域谱

subplot(9,2,9);
plot(t, noisy_signal);
xlabel('时间 (s)');
ylabel('幅度');
title('加入高斯小噪声后的信号的时域谱');

% 绘制频域谱
Noisy_signal = fftshift(fft(noisy_signal)/N); % 频域谱
subplot(9,2,10);
plot(frequencies, abs(Noisy_signal));
xlim([-Fs/2, Fs/2]);
xlabel('频率 (Hz)');
ylabel('幅度');
title('加入高斯小噪声后的信号的频域谱');

% (6) 对加小噪声信号进行解调并绘制时域谱和频域谱
demodulated_noisy_signal = noisy_signal .* carrier;

% 绘制时域谱

subplot(9,2,11);
plot(t, demodulated_noisy_signal);
xlabel('时间 (s)');
ylabel('幅度');
title('解调后的加小噪声信号的时域谱');

% 绘制频域谱
Demodulated_noisy_signal = fftshift(fft(demodulated_noisy_signal)/N); % 频域谱
subplot(9,2,12);
plot(frequencies, abs(Demodulated_noisy_signal));
xlim([-Fs/2, Fs/2]);
xlabel('频率 (Hz)');
ylabel('幅度');
title('解调后的加小噪声信号的频域谱');

% (7) 对已调信号加入高斯大噪声并绘制时域谱和频域谱
large_noise_power = 1; % 较大噪声功率
large_noise = sqrt(large_noise_power) * randn(size(modulated_signal)); % 高斯大噪声
large_noisy_signal = modulated_signal + large_noise;

% 绘制时域谱

subplot(9,2,13);
plot(t, large_noisy_signal);
xlabel('时间 (s)');
ylabel('幅度');
title('加入高斯大噪声后的信号的时域谱');

% 绘制频域谱
Large_Noisy_signal = fftshift(fft(large_noisy_signal)/N); % 频域谱
subplot(9,2,14);
plot(frequencies, abs(Large_Noisy_signal));
xlim([-Fs/2, Fs/2]);
xlabel('频率 (Hz)');
ylabel('幅度');
title('加入高斯大噪声后的信号的频域谱');

% (8) 对加大噪声信号进行解调并绘制时域谱和频域谱
demodulated_large_noisy_signal = large_noisy_signal .* carrier;

% 绘制时域谱

subplot(9,2,15);
plot(t, demodulated_large_noisy_signal);
xlabel('时间 (s)');
ylabel('幅度');
title('解调后的加大噪声信号的时域谱');

% 绘制频域谱
Demodulated_large_noisy_signal = fftshift(fft(demodulated_large_noisy_signal)/N); % 频域谱
subplot(9,2,16);
plot(frequencies, abs(Demodulated_large_noisy_signal));
xlim([-Fs/2, Fs/2]);
xlabel('频率 (Hz)');
ylabel('幅度');
title('解调后的加大噪声信号的频域谱');


% (9) 比较当信噪比不同时，误码率大小